package cn.lcsjsxy.yxc.collections_framework.Collection;

import org.junit.jupiter.api.Test;

import java.util.*;

public class TreeSetTest {
    /*
    * 1.向TreeSet中添加的数据，要求是相同类的对象
    * 2.两种排序方式：自然排序（实现Comparable接口）和定制排序
    * 3.自然排序中，比较两个对象是否相同的标准为：compareTo（）返回0，不再是equals（）
    * 4.定制排序中，比较两个对象是否相同的标准为：compareTo（）返回0，不再是equals（）
    * */
    @Test
    public void test(){
        TreeSet set = new TreeSet();
//        set.add(123);
//        set.add(456);
//        set.add("AA");
//        set.add(new com.yang_xc.miscellaneous.Person("Tom",22)); 失败：不能添加不同类的对象

        //举例一：
//        set.add(123);
//        set.add(456);
//        set.add(789);
//        set.add(-111);

        //举例二：
//        set.add(new String("10086"));
//        set.add(new String("爽"));
//        set.add(new String("好的"));
//        set.add(new String("5"));

        //举例三：
        set.add(new Person("Tom",22));
        set.add(new Person("AA",56));
        set.add(new Person("WA",59));
        set.add(new Person("CC",22));
        set.add(new Person("BB",30));
        set.add(new Person("BB",35));

        Iterator iterator=set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

    @Test
    public void test1(){
        Comparator com=new Comparator() {
            //按照年龄从小到大排列
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof Person && o2 instanceof Person){
                    Person p1=(Person) o1;
                    Person p2=(Person) o2;
                    return Integer.compare(p1.getAge(),p2.getAge());
                }else{
                    throw new RuntimeException("输入的数据类型不匹配");
                }
            }
        };
        TreeSet set=new TreeSet(com);
        set.add(new Person("Tom",22));
        set.add(new Person("AA",56));
        set.add(new Person("WA",59));
        set.add(new Person("CC",22));
        set.add(new Person("BB",30));
        set.add(new Person("BB",35));
        Iterator iterator=set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}
